package 力扣;

import java.util.Arrays;

/**
 老师想给孩子们分发糖果，有 N 个孩子站成了一条直线，老师会根据每个孩子的表现，预先给他们评分。
 你需要按照以下要求，帮助老师给这些孩子分发糖果：
 每个孩子至少分配到 1 个糖果。
 相邻的孩子中，评分高的孩子必须获得更多的糖果。
 那么这样下来，老师至少需要准备多少颗糖果呢？
 示例 1:
 输入: [1,0,2]
 输出: 5
 解释: 你可以分别给这三个孩子分发 2、1、2 颗糖果。
 示例 2:
 输入: [1,2,2]
 输出: 4
 解释: 你可以分别给这三个孩子分发 1、2、1 颗糖果。
 */
public class _135分发糖果 {


    public int candy(int[] ratings) {
            // 先全部置为1, 从前往后, 从后往前,遍历后面的糖果大于前面的糖果并且值小于前面 ,才进行+1

            if( ratings.length == 0 ) return 0;
            if( ratings.length == 1) return 1;
            int count = 0;
            int[] candy = new int[ratings.length];
            Arrays.fill(candy,1);
            // 从前往后
            for (int i = 1; i < ratings.length; i++) {
                if( ratings[i] > ratings[i-1] && candy[i]<=candy[i-1]){
                    candy[i] = candy[i-1]+1;
                }
            }
        for (int i = ratings.length-2; i >=0 ; i--) {
                if( ratings[i] > ratings[i+1] && candy[i] <=  candy[i+1]){
                    candy[i] = candy[i+1]+1;
                }
        }

        for (int i = 0; i <candy.length ; i++) {
            count += candy[i];
        }
        return count;
    }
}
